package top.bulk.intemasking.enums;

import cn.hutool.core.util.DesensitizedUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import top.bulk.intemasking.masking.Masking;

/**
 * 敏感词类型枚举类
 *
 * @author 散装java
 * @date 2024-07-15
 */
@Getter
@AllArgsConstructor
public enum SensitiveTypeEnum implements Masking {
    /**
     * 默认脱敏
     */
    DEFAULT {
        @Override
        public String hide(String value) {
            // 默认不脱敏
            return value;
        }
    },
    /**
     * 自定义脱敏
     */
    CUSTOM_RULE {
        @Override
        public String hide(String value) {
            throw new RuntimeException("自定义规则，必须制定起止位置");
        }
    },
    /**
     * 手机号脱敏
     */
    PHONE {
        @Override
        public String hide(String value) {
            return DesensitizedUtil.mobilePhone(value);
        }
    },
    /**
     * 电子邮件脱敏
     */
    EMAIL {
        @Override
        public String hide(String value) {
            return DesensitizedUtil.email(value);
        }
    },
    /**
     * 身份证号脱敏
     */
    ID_CARD {
        @Override
        public String hide(String value) {
            return DesensitizedUtil.idCardNum(value, 1, 4);
        }
    },
    /**
     * 银行卡号脱敏
     */
    BANK_CARD {
        @Override
        public String hide(String value) {
            return DesensitizedUtil.bankCard(value);
        }
    },
    /**
     * 地址脱敏
     */
    ADDRESS {
        @Override
        public String hide(String value) {
            return DesensitizedUtil.address(value, 8);
        }
    },
    /**
     * 中文姓名脱敏
     */
    CHINESE_NAME {
        @Override
        public String hide(String value) {
            return DesensitizedUtil.chineseName(value);
        }
    },
    /**
     * 密码脱敏
     */
    PASSWORD {
        @Override
        public String hide(String value) {
            return DesensitizedUtil.password(value);
        }
    },
}
